Computers and computing systems have affected nearly every aspect of modern living. Computers are generally involved in work, recreation, healthcare, transportation, entertainment, household management, and so forth. Computing systems are providing ever more complex and sophisticated functionality. Such functionality is often primarily driven by underlying software, which itself is becoming ever more complex. Application developers have the task of developing such software, and to tune performance to ensure efficient and secure operation.
Web applications are often designed and implemented following a client-server computing model. This model usually provides that core application logic is executed on remote servers, execution results are accessed through clients (e.g., web browsers), and client code communicates with server code using an application-layer protocol (e.g., HTTP). Execution of a web application on a server is often driven by a component that takes and parses inputs received from clients, dispatches requests with recognized input parameters to respective business-logic components for processing, and then produces outputs to be sent back to clients. The produced output also usually determines what inputs an application is going to receive subsequently. Such components are generally developed using a domain language which is different from the programming language used to develop other components of the application. This discrepancy can oftentimes lead to semantic gaps between code parsing inputs and code producing outputs, as well as different identifiers being used to refer to the same object in different components.
The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one exemplary technology area where some embodiments described herein may be practiced.